<%-- 控制器使用jsp,是因为为了在配置项中可以使用表达式 --%>
<%-- 可以使用两种配置方法: --%>
<%-- 1,配置servlet: --%>
<%-- <servlet> --%>
<%--    <servlet-name>TemplateController</servlet-name> --%>
<%--    <jsp-file>/templates/controller.jsp</jsp-file> --%>
<%--    <init-param> --%>
<%--        <param-name>config</param-name> --%>
<%--        <param-value>/WEB-INF/templates-conifg.xml,/WEB-INF/templates-conifg-1.xml</param-value> --%>
<%--    </init-param> --%>
<%-- </servlet> --%>
<%-- <servlet-mapping> --%>
<%--    <servlet-name>TemplateController</servlet-name> --%>
<%--    <url-pattern>*.template</url-pattern> --%>
<%-- </servlet-mapping> --%>
<%-- 2,使用struts --%>
<%--   2-1, --%>
<%-- +--+------------+----------+-----------------------------+ --%>
<%-- |No|变量名      |作用域    |说明                         | --%>
<%-- +--+------------+----------+-----------------------------+ --%>
<%-- | 1|rparam      |request   |请求参数 - 备份              | --%>
<%-- | 2|rparamvalues|request   |请求参数 数组 - 备份         | --%>
<%-- | 3|tlconfig    |app       |配置信息                     | --%>
<%-- | 4|pconfig     |request   |请求的pattern配置信息        | --%>
<%-- | 5|tconfig     |request   |当前模版template配置信息     | --%>
<%-- | 6|ddpath      |request   |文件输出目录                 | --%>
<%-- +--+------------+----------+-----------------------------+ --%>
<%@ page contentType="text/html; charset=utf-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="c_rt" uri="http://java.sun.com/jstl/core_rt"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="fmt_rt" uri="http://java.sun.com/jstl/fmt_rt"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml"%>
<%@ taglib prefix="x_rt" uri="http://java.sun.com/jstl/xml_rt"%>
<%@ taglib prefix="wr_fn" uri="http://njo.org/taglib/functions"%>
<%-- *设定变量************************************************************* --%>
<%-- 请求参数的备份 --%>
<c:set var="rparam" value="${param}" scope="request"/>
<%-- 请求参数数组的备份 --%>
<c:set var="rparamvalues" value="${paramValues}" scope="request"/>
<%-- 配置文件需要在第一次请求时，加载到ServletContext中 --%>
<%-- 分析path,取得正确模版集合(pattern),并取得配置信息 --%>
<c:set var="pconfig" value="${wr_fn:processMapping(pageContext)}" scope="request"/>
<%-- 输出输出目录,TODO:取得系统临时目录,在临时目录下根据时间戳,创建目录作为模版的输出目录 --%>
<c:set var="ddpath" value="${'c:/temp/'}" scope="request"/>
<%-- ********************************************************************** --%>
<c:choose>
  <c:when test="${!wr_fn:isEmpty(pconfig)}">
    <%-- 遍历模版集合(pattern) --%>
    <c:forEach items="${pconfig.templates}" var="item" varStatus="itemStatus">
        <%-- 取得该模版template配置信息 --%>
        <c:set var="tconfig" value="${item.value}" scope="request"/>
        <%-- 根据配置信息,执行模版 --%>
        <%-- 1, 执行表达式转换取得模版源src[输入文件(模版文件)] --%>
        <c:set var="src" value="${wr_fn:evaluate(tconfig.src, pageContext)}"/>
        <%-- 2, 执行表达式转换取得模版输出目标 --%>
        <c:set var="dest" value="${wr_fn:evaluate(tconfig.dest, pageContext)}"/>
        <%-- 3, 执行模版,输出文件 TODO,转换完毕后,可能需要格式化   --%>
        ${wr_fn:transform(src, dest, ddpath, tconfig.outit, pattern.charset, pageContext)}<br>
    </c:forEach>
    <%-- 压缩文件夹 TODO: --%>
    <c:set var="destzip" value="TL0001" scope="request"/>
    <%-- 下载该压缩文件 TODO: --%>
完成。<a href="aaa.zip">点击这里下载</a>
  </c:when>
  <c:otherwise>
TODO:没有找到模版。404 
  </c:otherwise>
</c:choose>